cmake_minimum_required(VERSION 3.10)

####################################### 编译模式设置 #######################################
set(DEBUG_VERSION "DebugMode")
set(RELEASE_VERSION "ReleaseMode")
set(COMPILE_MODE ${RELEASE_VERSION})            # 编译模式
set(TARGET_NAME "hello")                        # 目标可执行程序名称
string(TIMESTAMP COMPILE_TIME %Y%m%d_%H.%M.%S)  # 生成编译时间

# Debug模式（目标：工程名+编译时间）
if(${COMPILE_MODE} MATCHES ${DEBUG_VERSION})   
    message(STATUS "Compile mode: ${COMPILE_MODE}")
    set(USE_RELEASE_MODE 0)
    set(CMAKE_BUILD_TYPE "Debug")
    set(target ${TARGET_NAME}_${COMPILE_TIME})
# Release模式（目标：工程名+版本号）
else()
    message(STATUS "Compile mode: ${COMPILE_MODE}")
    set(USE_RELEASE_MODE 1)
    set(CMAKE_BUILD_TYPE "Release") 
    set(VERSION_MAJOR  1)    # 一级版本号
    set(VERSION_MINOR  1)    # 二级版本号
    set(VERSION_LEVEL3 1)    # 三级版本号
    set(target ${TARGET_NAME}_V${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_LEVEL3})
endif()
project(${target})

# 加入一个配置头文件，用于处理 CMake 对源码的设置
configure_file (
  "config.h.in"
  "../config.h"
  )

####################################### 编译选项配置 #######################################
set(CMAKE_CXX_FLAGS "-std=c++11")
set(CMAKE_CXX_FLAGS_RELEASE "-O0 -Wall")
set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")
set(CMAKE_C_FLAGS "-fdata-sections -g -rdynamic -funwind-tables -ffunction-sections -Wall")
set(CMAKE_CXX_FLAGS "-fdata-sections -Wno-psabi") 

####################################### 头文件 ############################################
include_directories(inc)

####################################### 源文件 ############################################
aux_source_directory(src SRCS)

message(STATUS "################## Compile time：${COMPILE_TIME} ##################")
add_executable(${PROJECT_NAME} ${SRCS} main.c)
